From: Alexander Larsson Date: Tue, 8 Mar 2011 13:50:34 +0000 (+0100) Subject: Start the workspace zoom out immediately on dnd cancel. X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~8730 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=df2f939f3a54f5b30b4f87451e45939944b80d80;p=gnome-shell.git Start the workspace zoom out immediately on dnd cancel. This means the snap-back animation happens at the same time as the zoom, which looks much better. https://bugzilla.gnome.org/show_bug.cgi?id=643786 --- diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js index df69f9968..c2502ef98 100644 --- a/js/ui/workspacesView.js +++ b/js/ui/workspacesView.js @@ -553,6 +553,7 @@ WorkspacesDisplay.prototype = { this.workspacesView = null; this._inDrag = false; + this._cancelledDrag = false; this._zoomOut = false; this._zoomFraction = 0; @@ -562,6 +563,7 @@ WorkspacesDisplay.prototype = { this._itemDragBeginId = 0; this._itemDragEndId = 0; this._windowDragBeginId = 0; + this._windowDragCancelledId = 0; this._windowDragEndId = 0; }, @@ -597,6 +599,9 @@ WorkspacesDisplay.prototype = { if (this._windowDragBeginId == 0) this._windowDragBeginId = Main.overview.connect('window-drag-begin', Lang.bind(this, this._dragBegin)); + if (this._windowDragCancelledId == 0) + this._windowDragCancelledId = Main.overview.connect('window-drag-cancelled', + Lang.bind(this, this._dragCancelled)); if (this._windowDragEndId == 0) this._windowDragEndId = Main.overview.connect('window-drag-end', Lang.bind(this, this._dragEnd)); @@ -631,6 +636,10 @@ WorkspacesDisplay.prototype = { Main.overview.disconnect(this._windowDragBeginId); this._windowDragBeginId = 0; } + if (this._windowDragCancelledId > 0) { + Main.overview.disconnect(this._windowDragCancelledId); + this._windowDragCancelledId = 0; + } if (this._windowDragEndId > 0) { Main.overview.disconnect(this._windowDragEndId); this._windowDragEndId = 0; @@ -782,7 +791,7 @@ WorkspacesDisplay.prototype = { if (Main.overview.animationInProgress) return; - let shouldZoom = this._controls.hover || this._inDrag; + let shouldZoom = this._controls.hover || (this._inDrag && !this._cancelledDrag); if (shouldZoom != this._zoomOut) { this._zoomOut = shouldZoom; this._updateWorkspacesGeometry(); @@ -805,6 +814,12 @@ WorkspacesDisplay.prototype = { _dragBegin: function() { this._inDrag = true; + this._cancelledDrag = false; + this._updateZoom(); + }, + + _dragCancelled: function() { + this._cancelledDrag = true; this._updateZoom(); },